package cn.jsc.quartz.config;

import cn.jsc.quartz.job.PrintTimeJob;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Cron Expressions【Cron 表达式】 https://cron.qqe2.com/
 */
//@Configuration//这是一个配置类
    public class QuartzConfig {
        @Bean
        public JobDetail newJob(){
            return JobBuilder.newJob(PrintTimeJob.class)//PrintTimeJob我们的业务类
                    .withIdentity("9527")//可以给该JobDetail起一个id
                    //每个JobDetail内都有一个Map，包含了关联到这个Job的数据，在Job类中可以通过context获取
                    .usingJobData("msg", "Hello Quartz")//关联键值对
                    .storeDurably()//即使没有Trigger关联时，也不需要删除该JobDetail - 做持久化
                    .build();
        }
        @Bean
        public Trigger printTimeJobTrigger() {
            CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("* * * * * ? *");
            return TriggerBuilder.newTrigger()
                    .forJob(newJob())//关联上述的JobDetail
                    .withIdentity("quartzTaskService")//给Trigger起个名字
                    .withSchedule(cronScheduleBuilder)
                    .build();
        }
    }